home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / bsfengines.jar / com / ibm / bsf / engines / jpython / JPythonEngine.class (.txt)
Encoding:
Java Class File  |  1999-12-09  |  2.6 KB  |  83 lines

  1. package com.ibm.bsf.engines.jpython;
  2.  
  3. import com.ibm.bsf.BSFDeclaredBean;
  4. import com.ibm.bsf.BSFException;
  5. import com.ibm.bsf.BSFManager;
  6. import com.ibm.bsf.util.BSFEngineImpl;
  7. import com.ibm.bsf.util.BSFFunctions;
  8. import java.util.Vector;
  9. import org.python.core.PyException;
  10. import org.python.core.PyObject;
  11. import org.python.util.PythonInterpreter;
  12.  
  13. public class JPythonEngine extends BSFEngineImpl {
  14.    PythonInterpreter interp;
  15.  
  16.    public void initialize(BSFManager var1, String var2, Vector var3) throws BSFException {
  17.       super.initialize(var1, var2, var3);
  18.       this.interp = new PythonInterpreter();
  19.       this.interp.set("bsf", new BSFFunctions(var1, this));
  20.       int var4 = var3.size();
  21.  
  22.       for(int var5 = 0; var5 < var4; ++var5) {
  23.          this.declareBean((BSFDeclaredBean)var3.elementAt(var5));
  24.       }
  25.  
  26.    }
  27.  
  28.    public Object eval(String var1, int var2, int var3, Object var4) throws BSFException {
  29.       try {
  30.          return this.interp.eval(var4.toString());
  31.       } catch (PyException var6) {
  32.          var6.printStackTrace();
  33.          throw new BSFException(BSFException.REASON_EXECUTION_ERROR, "exception from JPython: " + var6, var6);
  34.       }
  35.    }
  36.  
  37.    public void exec(String var1, int var2, int var3, Object var4) throws BSFException {
  38.       try {
  39.          this.interp.exec(var4.toString());
  40.       } catch (PyException var6) {
  41.          var6.printStackTrace();
  42.          throw new BSFException(BSFException.REASON_EXECUTION_ERROR, "exception from JPython: " + var6, var6);
  43.       }
  44.    }
  45.  
  46.    public Object call(Object var1, String var2, Object[] var3) throws BSFException {
  47.       StringBuffer var4 = new StringBuffer(300);
  48.       if (var1 != null) {
  49.          var4.append(var1.toString());
  50.          var4.append(".");
  51.       }
  52.  
  53.       var4.append(var2);
  54.       var4.append("(");
  55.       if (var3 != null) {
  56.          for(int var5 = 0; var5 < var3.length; ++var5) {
  57.             var4.append(var3[var5].toString());
  58.             if (var5 < var3.length - 1) {
  59.                var4.append(",");
  60.             }
  61.          }
  62.       }
  63.  
  64.       var4.append(")");
  65.       String var7 = var4.toString();
  66.  
  67.       try {
  68.          return this.eval("<jpython-call>", 0, 0, var7);
  69.       } catch (BSFException var6) {
  70.          this.exec("<jpython-call>", 0, 0, var7);
  71.          return null;
  72.       }
  73.    }
  74.  
  75.    public void declareBean(BSFDeclaredBean var1) throws BSFException {
  76.       this.interp.set(var1.name, var1.bean);
  77.    }
  78.  
  79.    public void undeclareBean(BSFDeclaredBean var1) throws BSFException {
  80.       this.interp.set(var1.name, (PyObject)null);
  81.    }
  82. }
  83.